import ajax from 'service/ajax'

// var reConfigTimer = null

export default {
    state: {
        // 未认证
        ready: 0
    },
    getters: {
        wxReady(state) {
            return state.ready
        }
    },
    mutations: {
        wxReady(state, status) {
            state.ready = status
        }
    },
    actions: {
        wxReady({ dispatch, commit, getters }, payload) {
            if (getters.wxReady == 1) {
                // 如果已经认证过
                if (payload.success) {
                    payload.success()
                }
            } else {
                // 未认证过
                wx.error(() => {
                    // 认证失败
                    commit('wxReady', -1)
                })
                wx.ready(() => {
                    if (getters.wxReady != -1) {
                        // 认证成功
                        commit('wxReady', 1)
                        if (payload.success) {
                            payload.success()
                        }
                    }
                })
                dispatch('wxConfigAjax', payload)
            }
        },
        wxConfigAjax({ dispatch }, payload) {
            // 如果没有完成配置，则先完成配置，再调用wxsdk中的方法
            ajax.weChat.config({
                url: payload.url
            }).then(res => {
                var { code, data } = res.data
                if (code == 'S') {
                    wx.config({
                        // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
                        debug: false,
                        // 必填，公众号的唯一标识
                        appId: data.appid,
                        // 必填，生成签名的时间戳
                        timestamp: data.timestamp,
                        // 必填，生成签名的随机串
                        nonceStr: data.noncestr,
                        // 必填，签名，见附录1
                        signature: data.signature,
                        // 必填，需要使用的JS接口列表，所有JS接口列表见附录2
                        jsApiList: ['getLocation', 'onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareQQ', 'onMenuShareWeibo', 'onMenuShareQZone']
                    })
                }
            })
        },
        wxLbs(data) {
            var postWxLbs = () => {
                // 注册权限认证成功之后的操作
                wx.getLocation({
                    // 默认为wgs84的gps坐标，如果要返回直接给openLocation用的火星坐标，可传入'gcj02'
                    type: 'wgs84',
                    success(res) {
                        data.latitude = res.latitude
                        data.longitude = res.longitude
                        ajax.user.saveLbs(data)
                    }
                })
            }
            // 优先用原生对象获取地理位置，其次微信jssdk获取原生对象
            if ('geolocation' in navigator) {
                navigator.geolocation.getCurrentPosition(position => {
                    data.latitude = position.coords.latitude
                    data.longitude = position.coords.longitude
                    ajax.user.saveLbs(data)
                }, err => {
                    postWxLbs()
                })
            } else {
                postWxLbs()
            }
        }
    }
}